<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css" media="screen">
		
	</style>
</head>
<body>
    <script type="text/javascript">
    // 回调函数-1个函数走完,回头用它在调用
	//回调函数就是一个参数，将这个函数作为参数传到另一个函数里面，当那个函数执行完之后，再执行传进去的这个函数
	//主函数不用等待回调函数执行完，可以接着执行自己的代码。所以一般回调函数都用在链式运动中动画操作上等。

    //0.如何把函数内部变量拿到外部使用
	//方法1-闭包
//     function aa(){
// 		let b=1
// 		return function cc(){
// 			console.log(20,b);
// 		}
// 	}
//    aa()()
    //方法2-回调函数
// 	function aa(cb){
// 		let b=1
// 		cb(b)
// 	}
//    aa(function(c){
// 	   console.log(31,c);
//    })



    //1.基础的 
	//主函数
	
  function A(callback) { //callback形参
		
		console.log('我是主函数')  
		if(callback){  //如果存在就运行
			callback()
		}
		   
	}

	//调用-把函数做为实参传进去
	A(function(){ //回调函数
	   console.log('我是回调函数')  
	}) 


   //输出结果
   //我是主函数
   //我是回调函数
	
	//2.升级下-把主函数里的值传出去
	//主函数
/* 	function A(callback) { 
		
		console.log('我是主函数')  
		var dd=22
		if(callback){ 
			callback(dd)//把dd值传出去
		}
		   
	}
	
	//调用-把函数做为实参传进去
	A(function(aa){ 
	   console.log('我是回调函数')
	   console.log(aa)
	}) */
	



	</script>
</body>
</html>